<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">




<title>依赖之殇 - 张逸:晴窗笔记 - 博客园</title>
<meta name="keywords" content="编程絮语">




<link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/wayfarer/rss">
<link title="RSD" type="application/rsd+xml" rel="EditURI" href="http://www.cnblogs.com/wayfarer/rsd.xml"> 
  



<link rel="stylesheet" type="text/css" href="index.css" media="all">
</head>
<body>
    <form name="Form1" method="post" action="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html" id="Form1">
<div>
<input name="__EVENTTARGET" id="__EVENTTARGET" value="" type="hidden">
<input name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" type="hidden">
<input name="__VIEWSTATE" id="__VIEWSTATE" value="" type="hidden">
</div>




        <div id="blogtopad">

<ins style="border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 60px; position: relative; visibility: visible; width: 468px;"><ins style="border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 60px; position: relative; visibility: visible; width: 468px;"><iframe allowtransparency="true" hspace="0" id="google_ads_frame1" marginheight="0" marginwidth="0" name="google_ads_frame" src="index_1.html" style="left: 0pt; position: absolute; top: 0pt;" vspace="0" scrolling="no" frameborder="0" height="60" width="468"></iframe></ins></ins>
</div>
			<div id="header">
<h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/wayfarer/">张逸:晴窗笔记</a></h1>
<p id="tagline"><!--end  版权保护 -->
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/cn/"><img alt="Creative Commons License" style="border-width: 0pt;" src="88x31.png"></a>
<!-- 版权保护 --></p></div>
			<div id="main">
				
					
	<div class="post">
		<h2>
			<a id="ctl04_TitleUrl" href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html">依赖之殇</a>
		</h2>
		<div class="postText"><p align="right"><strong>《编程絮语》之二</strong></p>  <p>没有对象协作的系统是不可想象的，因为此时的系统就是一个庞大的类，一个无所不知的“上帝类”。每个对象都有自己的自治领域，“各人自扫门前雪”，对象定义的法则就是这么自私。单一职责原则（SRP）[1]体现的正是这样的道理。对象的职责越少，则对象之间的依赖就越少。这一前提就是对象具有足够的高内聚与细粒度。这样的对象一方面有利于对象的重用，另一方面也保证了对象的稳定性。</p>  <p>对象的职责可以是自己承担，也可以委派给其他对象。因此，有对象就必然有依赖，正如有人就有江湖。那么，我们该如何降低对象之间的依赖？第一要则是依赖于抽象，如依赖倒置原则（DIP）[2]所云。如果无法依赖于抽象，则至少应该保证你所依赖的对象是足够稳定的。事实上，最稳定的对象就是抽象对象，所以万法归一，稳定才是降低依赖的基础。</p>  <p>依赖之殇的源头是“变化”。变化与稳定显然是矛盾的，软件设计的最大问题就是如何协调这两者之间的矛盾。我们需要像高明的杂技师，要学会掌握平衡，能够在钢丝绳上无碍的行走。那么，如何解决变化带来的影响呢？答案是利用封装来隔离变化。</p>  <p>封装的一种方式是抽象，因为相对于实现而言，接口总能保持一定的稳定性。例如税收策略。对于调用方而言，只是希望能够得到准确的税值，至于如何计算，则不是他关心的内容。抽象出计算税值的接口，就能够隔离调用方与可能变化的税收策略之间的依赖关系，如下图所示：<img title="taxstrategy" style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" alt="taxstrategy" src="taxstrategy_9.gif" border="0" height="203" width="516"></p>  <p>利用抽象还可以解除对特定实现环境例如外部资源、硬件或数据库的依赖。此时抽象隔离的变化可能是外部环境提供的API。例如，在考勤系统中，利用抽象隔离不同型号考勤机的变化。<img title="timecardmachine" style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" alt="timecardmachine" src="timecardmachine_3.gif" border="0" height="211" width="395"></p>  <p>利用抽象解除对象之间的依赖，还可以保证系统具有良好的可测试性。因为调用者依赖于抽象接口，就为我们引入Mock对象（当然也可以是Fake对象）执行单元测试提供了方便。尤其是当我们对领域对象进行测试时，如果领域对象需要对数据库操作，可以通过依赖抽象的持久对象（或仓储对象）实现职责的委派。此时，我们可以引入持久对象的Mock对象，模拟领域对象持久化的职责，既分离了领域对象与数据库资源的依赖关系，又能够提高单元测试的效率。<img title="order" style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" alt="order" src="order_3.gif" border="0" height="241" width="469">&nbsp;<span style="color: blue;">public</span> <span style="color: blue;">interface</span> <span style="color: rgb(43, 145, 175);">IOrderRepository      <br></span>{</p>  <div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: ������;">   <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">void</span> Add(<span style="color: rgb(43, 145, 175);">OrderInfo</span> order);</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">void</span> Remove(<span style="color: rgb(43, 145, 175);">OrderInfo</span> order);</p>    <p style="margin: 0px;">}</p>    <p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Order</span></p>    <p style="margin: 0px;">{</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">private</span> <span style="color: rgb(43, 145, 175);">IOrderRepository</span> m_repository;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> Order(<span style="color: rgb(43, 145, 175);">IOrderRepository</span> repository)</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; {</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_repository = repository;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; }</p>    <p style="margin: 0px;">&nbsp;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">void</span> Place(<span style="color: rgb(43, 145, 175);">OrderInfo</span> order)</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; {</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">if</span> (order.Validate())</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_repository.Add(order);</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; }</p>    <p style="margin: 0px;">}</p>    <p style="margin: 0px;">&nbsp;</p> </div>  <p>利用封装隔离变化，并非必须依赖于抽象，根据不同的场景，降低要求，依赖于较为稳定的具体类对象也是可行的。这是一种降低复杂度的设计方式。例如，我们可以引入一个Helper类来封装第三方API的调用，从而实现调用方与第三方API的隔离。例如为SQL Server数据库操作定义一个Helper类：    <br><span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">SQLHelper      <br></span>{     <br>&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> ExecuteNonQuery() {}&nbsp; <br>&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> DataSet ExecuteQuery() {}     <br>}</p>  <p>这样的设计类似于Gateway模式[3]，利用一个Gateway对象来封装外部系统或资源访问。具体类对象显然不如抽象接口稳定，因此在设计时，我们需要遵循单一职责原则。这样的设计体现了DRY[4]原则，利用封装避免代码的重复，避免解决方案蔓延的坏味道[5]。合理的封装可以将变化点集中或限制到一处，以应对变化。一个常见的例子是利用简单工厂模式，将所有对象的创建集中在一个类中（当然也可以按模块创建不同的静态工厂）。即使创建的产品对象发生了变化，我们也可以只修改静态工厂类一处的实现。简单工厂模式常常可以应用在领域层中，通过工厂对象创建持久层对象（或所谓的数据访问对象）。</p>  <p>依赖源于对象的协作。传递依赖的方式可以通过属性，构造函数或方法的参数。若要保证对象间的松散耦合，构造函数或方法的参数以及属性的类型就应定义为抽象类型，如前面例子中的Order类。这是依赖解耦的关键方式，完全符合“面向接口设计”的编程思想，同时，它也有利于我们在后期实现“依赖注入”。</p>  <p>然而，产生依赖的方式绝不仅限于上述三种情形。例如，方法的返回值以及方法体中局部对象的创建，同样可能产生依赖。比较而言，这种依赖关系更难解除，因为它与具体的实现紧密相关。换句话说，因为这两种情形的依赖都涉及到具体对象的创建，且由实现者完成，而不能转交给调用方。例如，在如下的设计中，消息头会决定消息编码的方式。</p>  <p><img title="Encoder" style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" alt="Encoder" src="encoder_3.gif" border="0" height="244" width="433"></p>  <p>MessageHeader的GetEncoder()方法需要返回一个IEncoder对象，这就要求在方法体中创建一个具体的IEncoder对象。要解除这样的依赖关系非常困难，如需彻底解除，一种可能是利用反射技术，通过具体类的类型来创建。还有一种可能是利用“惯例优于配置”实现解耦[6]。如果不需要彻底解除依赖，也可以利用“表驱动法”，或者直接将条件分支语句封装到方法中。</p>  <p>如果在方法实现中需要创建一个局部对象，我们可以考虑简单工厂模式或Registry模式[3]。例如，在Role对象的IsAuthorized()方法中，需要创建一个PriviledgeFinder对象，通过调用它的FindPriviledges()方法获得角色对应的权限集。此时，我们可以在Registry对象中提供PriviledgeFinder对象：    <br><span style="color: blue;">interface</span> <span style="color: rgb(43, 145, 175);">IPriviledgeFinder      <br></span>{</p>  <div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: ������;">   <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">Priviledge</span>&gt; GetPriviledges(<span style="color: blue;">int</span> roleID);</p>    <p style="margin: 0px;">}</p>    <p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">PriviledgeFinder</span>:<span style="color: rgb(43, 145, 175);">IPriviledgeFinder</span></p>    <p style="margin: 0px;">{}</p>    <p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Registry</span></p>    <p style="margin: 0px;">{</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">private</span> Registry()</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; { }</p>    <p style="margin: 0px;">&nbsp;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">private</span> <span style="color: blue;">static</span> <span style="color: rgb(43, 145, 175);">Registry</span> Instance = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Registry</span>();</p>    <p style="margin: 0px;">&nbsp;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">protected</span> <span style="color: blue;">virtual</span> <span style="color: rgb(43, 145, 175);">IPriviledgeFinder</span> m_priviledge = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">PriviledgeFinder</span>();</p>    <p style="margin: 0px;">&nbsp;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: rgb(43, 145, 175);">IPriviledgeFinder</span> PriviledgeFinder()</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; {</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue;">return</span> Instance.m_priviledge;</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; }</p>    <p style="margin: 0px;">}</p>    <p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Role</span></p>    <p style="margin: 0px;">{</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">bool</span> IsAuthorized()</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; {</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">Priviledge</span>&gt; priviledges =       <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">Registry</span>.PriviledgeFinder().GetPriviledges(<span style="color: blue;">this</span>.ID);</p>    <p style="margin: 0px;">&nbsp;&nbsp;&nbsp; }</p>    <p style="margin: 0px;">}      <br></p> </div>  <p>上述实现实际上仍然利用了“将变化集中在一处”的设计原则。注意Registry类中的m_priviledge属性是virtual的受保护属性，它提供了一种变化的可能，可以交由子类去实现。</p>  <p>如何知道一个类是否过多的依赖其他类？一个办法就是创建这个类，并保证创建的对象能够正常使用。如果创建的过程非常复杂，就说明该类的依赖过多。此时，可以考虑分解该类的职责。如果这些依赖是必须的，则可以考虑利用封装，例如将对外部对象的调用修改为在内部创建（应用builder模式）；也可以考虑使用Factory Method模式或者利用简单工厂。</p>  <p>依赖关系不仅仅只限于类与类之间，包（组件、模块、层）与包（组件、模块、层）之间同样存在依赖关系。良好的设计需要包之间保持松散耦合。大体上讲，包之间的依赖解除与类之间的依赖解除方式是一致的。即：要求一个包尽量依赖于一个稳定的包。注意，一个包依赖于另一个包，就代表着它依赖于这个包的每一个类。Robert C. Martin说：“我放入一个包中的所有类是不可分开的，仅仅依赖于其中一部分的情况是不可能的。”[7]因此，我们可以将一个包看做是一个类，它仍然要求职责的高内聚。在包中对类的分配，就相当于是对类进行一次分类。共同封闭原则[7]要求：“包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响，则将对该包中的所有类产生影响，而对于其他的包不造成任何影响。”简言之，我们在对包进行设计时，需要避免将不同的职责耦合在一个包中，它会造成变化点的扩散。</p>  <p>解除包之间依赖关系的一个重要方法仍然是抽象。使用Seperated Interface模式[3]，在一个包中定义接口，而在另一个与这个包分离的包中实现这个接口。例如在分层架构模式中，我们常常对数据访问层进行抽象，使得业务逻辑层依赖于该抽象层，而不是它的低层模块。<img title="layer" style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" alt="layer" src="layer_3.gif" border="0" height="296" width="384"></p>  <p>上图的设计实际上是依赖倒置原则的体现。在项目开发中，这种将抽象与实现分别放在不同的包中，是系统设计中常见的方式。这样的设计也能够更好地应用在分布式开发场景中。</p>  <p>[1]单一职责原则（Single Responsibility Principle）：就一个类而言，应该只专注于做一件事和仅有一个引起变化的原因；    <br>[2]依赖倒置原则（Dependency Inversion Principle）：高层模块不应该依赖于低层模块，二者都应该依赖于抽象；抽象不应该依赖于细节，细节应该依赖于抽象；     <br>[3]Martin Fowler, Patterns of Enterprise Application Architecture；     <br>[4]DRY原则，即“不要重复你自己（Don't Repeat Yourself）”它要求“系统中的每项知识只应该在一个地方描述。”     <br>[5]Joshua Kerievsky, Refactoring to Patterns；     <br>[6]文章《<a target="_top" href="http://tech.it168.com/a2009/1102/801/000000801593.shtml">解除具体依赖的技术</a>》     <br>[7]Robert C. Martin Agile Software Development:Principles,Patterns and Practices</p><div id="EntryTag">Tag标签: <a href="http://www.cnblogs.com/wayfarer/tag/%e7%bc%96%e7%a8%8b%e7%b5%ae%e8%af%ad/">编程絮语</a></div>
<div id="digg_block">
<div id="div_digg">										
	<div class="diggit" onclick="DiggIt(1596954,819,1)"> 
		<span class="diggnum" id="digg_count_1596954">2</span>
	</div>
	<div class="buryit" onclick="DiggIt(1596954,819,2)"> 
		<span class="burynum" id="bury_count_1596954">0</span>
	</div>
	<div class="clear"></div>
	<span style="display: none;" id="span_isdigged_1596954">0</span>	
	<div class="diggword" id="digg_word_1596954">(请您对文章做出评价)</div>	
</div>
</div>
<div class="clear"></div>
<div id="post_next_prev">
<a href="http://www.cnblogs.com/wayfarer/archive/2009/11/03/1595555.html">« </a> 上一篇：<a href="http://www.cnblogs.com/wayfarer/archive/2009/11/03/1595555.html" title="发布于2009-11-03 21:58">虚方法的使用</a><br>
<a href="http://www.cnblogs.com/wayfarer/archive/2009/11/10/1600467.html">» </a> 下一篇：<a href="http://www.cnblogs.com/wayfarer/archive/2009/11/10/1600467.html" title="发布于2009-11-10 20:55">解除具体依赖的技术</a><br>
</div>







</div>
		<p class="postfoot">
			posted on 2009-11-05 21:20 <a href="http://www.cnblogs.com/wayfarer/">张逸</a> 阅读(1974) <a href="#commentform">评论(12)</a> &nbsp;<a href="http://www.cnblogs.com/wayfarer/admin/EditPosts.aspx?postid=1596954">编辑</a> <a href="http://www.cnblogs.com/wayfarer/AddToFavorite.aspx?id=1596954">收藏</a> <a href="#" onclick="PutInWz();return false;">网摘</a>  所属分类: <a href="http://www.cnblogs.com/wayfarer/category/14834.html">Design &amp; Pattern</a>
		</p>
	</div>
	<img src="1596954.html" height="1" width="1">
	
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html"
dc:identifier="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html"
dc:title=""
trackback:ping="http://www.cnblogs.com/wayfarer/services/trackbacks/1596954.aspx" />
</rdf:RDF>
-->

	<a name="pagedcomment"></a>
<a name="评论">
</a><div id="comments">
<h3><a name="评论">评论</a></h3>
<a name="评论">	<span id="span_comment_maxid" style="display: none;">1711960</span>
	
			</a><h4>
<a name="评论">				</a><a href="#1690789">#1楼</a><a name="1690789" id="comment_anchor_1690789"></a>
					<span>
						2009-11-05 22:46
					</span>
				<a id="Comments1_CommentList_ctl00_NameLink" href="http://www.cnblogs.com/artech/" target="_top">Artech</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Artech" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1690789" class="blog_comment_body">这应该是你的第二本书中的内容了吧？</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Artech",1690789,"OU7Un0MykKhMw2LeYkuhhwVhcLfqI+HOraeO9mynaxfgMt23Ky7Vlg==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1690789,"OU7Un0MykKhMw2LeYkuhhwVhcLfqI+HOraeO9mynaxfgMt23Ky7Vlg==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Artech" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl00_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl00$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl00_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1690936">#2楼</a><a name="1690936" id="comment_anchor_1690936"></a>
					<span>
						2009-11-06 09:24
					</span>
				<a id="Comments1_CommentList_ctl01_NameLink" href="http://www.cnblogs.com/jeriffe/" target="_top">Jeriffe</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Jeriffe" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1690936" class="blog_comment_body">又是一篇好文，相当的有内涵。</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Jeriffe",1690936,"jrceJpSRtiyXZsI/BEVdafxiNkJdrqb83aywM3woLBfmTW7W9zelyA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1690936,"jrceJpSRtiyXZsI/BEVdafxiNkJdrqb83aywM3woLBfmTW7W9zelyA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Jeriffe" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl01_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl01$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl01_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1690937">#3楼</a><a name="1690937" id="comment_anchor_1690937"></a>
					<span>
						2009-11-06 09:25
					</span>
				<a id="Comments1_CommentList_ctl02_NameLink" href="http://www.cnblogs.com/jeriffe/" target="_top">Jeriffe</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Jeriffe" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1690937" class="blog_comment_body">作者对设计模式很是精通呀。</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Jeriffe",1690937,"jrceJpSRtiyXZsI/BEVdafxiNkJdrqb83aywM3woLBfmTW7W9zelyA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1690937,"jrceJpSRtiyXZsI/BEVdafxiNkJdrqb83aywM3woLBfmTW7W9zelyA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Jeriffe" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl02_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl02$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl02_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1690983">#4楼</a><a name="1690983" id="comment_anchor_1690983"></a>
					<span>
						2009-11-06 09:54
					</span>
				<a id="Comments1_CommentList_ctl03_NameLink" href="http://www.cnblogs.com/beniao/" target="_top">Bēniaǒ</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/B%c4%93nia%c7%92" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1690983" class="blog_comment_body">张部  好久没写设计模式的blog了,支撑。</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Bēniaǒ",1690983,"C9k5DuT40UYtqVmhlX8o3oVfHquT/u16J7mn49U/J6U6X4SgGrrGAA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1690983,"C9k5DuT40UYtqVmhlX8o3oVfHquT/u16J7mn49U/J6U6X4SgGrrGAA==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=B%c4%93nia%c7%92" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl03_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl03$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl03_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691002">#5楼</a><a name="1691002" id="comment_anchor_1691002"></a>
					<span>
						2009-11-06 10:07
					</span>
				<a id="Comments1_CommentList_ctl04_NameLink" href="http://www.cnblogs.com/airwolf2026/" target="_top">airwolf2026</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/airwolf2026" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691002" class="blog_comment_body">为啥你们的twitter都没有被墙?</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("airwolf2026",1691002,"fHkNXo6lOIGIt0jNag09sEu3YoOQzY0HhnE7xMJhe2flj3/Y6PBcUw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691002,"fHkNXo6lOIGIt0jNag09sEu3YoOQzY0HhnE7xMJhe2flj3/Y6PBcUw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=airwolf2026" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl04_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl04$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl04_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691038">#6楼</a><a name="1691038" id="comment_anchor_1691038"></a>
					<span>
						2009-11-06 10:29
					</span>
				<a id="Comments1_CommentList_ctl05_NameLink" href="http://www.cnblogs.com/atwind/" target="_top">一线风</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/%e4%b8%80%e7%ba%bf%e9%a3%8e" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691038" class="blog_comment_body">都依赖于抽象。恩，有收获，呵~·~<br></span>
				&nbsp;&nbsp;<a onclick='ReplyComment("一线风",1691038,"5jNUDVG+QQ8tlxGu4RXovUAUHx8jW5kEY4N6vQXymEvpGsl1RwjWKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691038,"5jNUDVG+QQ8tlxGu4RXovUAUHx8jW5kEY4N6vQXymEvpGsl1RwjWKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=%e4%b8%80%e7%ba%bf%e9%a3%8e" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl05_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl05$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl05_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691043">#7楼</a><a name="1691043" id="comment_anchor_1691043"></a>
					<span>
						2009-11-06 10:32
					</span>
				<a id="Comments1_CommentList_ctl06_NameLink" href="http://www.cnblogs.com/joyaspx/" target="_top">Joyaspx</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Joyaspx" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691043" class="blog_comment_body">分析的不错，期待更多好文出现！</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Joyaspx",1691043,"QQpnYorUypUkI3HZBZHH2ictX4U948h5KdFgCdFj/elKyRD5EqfPKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691043,"QQpnYorUypUkI3HZBZHH2ictX4U948h5KdFgCdFj/elKyRD5EqfPKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Joyaspx" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl06_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl06$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl06_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691111">#8楼</a><a name="1691111" id="comment_anchor_1691111"></a>
					<span>
						2009-11-06 11:28
					</span>
				<a id="Comments1_CommentList_ctl07_NameLink" href="http://www.cnblogs.com/joyaspx/" target="_top">Joyaspx</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Joyaspx" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691111" class="blog_comment_body">还想请教一个问题，你的图是用什么工具来画的</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Joyaspx",1691111,"QQpnYorUypUkI3HZBZHH2ictX4U948h5KdFgCdFj/elKyRD5EqfPKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691111,"QQpnYorUypUkI3HZBZHH2ictX4U948h5KdFgCdFj/elKyRD5EqfPKw==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Joyaspx" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl07_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl07$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl07_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691225">#9楼</a><a name="1691225" id="comment_anchor_1691225"></a>
					<span>
						2009-11-06 13:27
					</span>
				<a id="Comments1_CommentList_ctl08_NameLink" href="http://www.cnblogs.com/codeyu/" target="_top">八一精神</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/%e5%85%ab%e4%b8%80%e7%b2%be%e7%a5%9e" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691225" class="blog_comment_body">好文。认真看了。<br>完全理解和灵活运用还需多练习，多实践，多读优秀代码。</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("八一精神",1691225,"lkmEAIrfn6rZnuic/rT6e2v3y1h0zB7xjqAUhgQIarHs+uJ5HhpH6Q==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691225,"lkmEAIrfn6rZnuic/rT6e2v3y1h0zB7xjqAUhgQIarHs+uJ5HhpH6Q==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=%e5%85%ab%e4%b8%80%e7%b2%be%e7%a5%9e" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl08_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl08$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl08_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691366">#10楼</a><a name="1691366" id="comment_anchor_1691366"></a>[<span class="louzhu">楼主</span>]
					<span>
						2009-11-06 15:50
					</span>
				<a id="Comments1_CommentList_ctl09_NameLink" href="http://www.cnblogs.com/wayfarer/" target="_top">张逸</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/%e5%bc%a0%e9%80%b8" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1691366" class="blog_comment_body">@Joyaspx<br>用EA画的。<br>@Artech<br>算是吧，不过只是随笔一类的东西，离成书还远。</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("张逸",1691366,"LHkTUtYukWU+rHtEIKV2SJX0pgvp5iG/kE+dYG79ZFq4+EVHjRul5A==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691366,"LHkTUtYukWU+rHtEIKV2SJX0pgvp5iG/kE+dYG79ZFq4+EVHjRul5A==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=%e5%bc%a0%e9%80%b8" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl09_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl09$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl09_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1691409">#11楼</a><a name="1691409" id="comment_anchor_1691409"></a>
					<span>
						2009-11-06 16:32
					</span>
				<a id="Comments1_CommentList_ctl10_NameLink" target="_blank">perfect2009[未注册用户]</a>
			</h4>
			<p>
				<span id="comment_body_1691409" class="blog_comment_body">好文！</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("perfect2009",1691409,"")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1691409,"")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl10_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl10$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl10_EditLink"></a>
			</p>
		
			<h4>
				<a href="#1711960">#12楼</a><a name="1711960" id="comment_anchor_1711960"></a><a name="Post"></a>
					<span>
						2009-12-01 15:25
					</span>
				<a id="Comments1_CommentList_ctl11_NameLink" href="http://www.cnblogs.com/xiaoshatian/" target="_top">Windie Chai</a>&nbsp;<a href="http://space.cnblogs.com/msg/send/Windie+Chai" title="给此人发送站内短消息" class="sendMsg2This">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
			</h4>
			<p>
				<span id="comment_body_1711960" class="blog_comment_body">好文！</span>
				&nbsp;&nbsp;<a onclick='ReplyComment("Windie Chai",1711960,"lwOzNIV252BT8m6PHa5obUfCjjiTqK1D9095O0uCz2+krcCnnhlD2Q==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">回复</a>&nbsp;&nbsp;<a onclick='QuoteComment(1711960,"lwOzNIV252BT8m6PHa5obUfCjjiTqK1D9095O0uCz2+krcCnnhlD2Q==")' href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html#commentform">引用</a>&nbsp;&nbsp;<a title="查看该作者发表过的评论" href="http://www.cnblogs.com/CommentsByAuthor.aspx?author=Windie+Chai" target="_top">查看</a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl11_DeleteLink" href="javascript:__doPostBack('Comments1$CommentList$ctl11$DeleteLink','')"></a>&nbsp;&nbsp;<a id="Comments1_CommentList_ctl11_EditLink"></a>
			</p>
		
</div>

<div id="ctl05_comment_form" class="commentform">




<div id="ctl05_divLoginPannel">
<div class="login_tips">注册用户登录后才能发表评论，请 <a href="http://passport.cnblogs.com/login.aspx?ReturnUrl=http%3a%2f%2fwww.cnblogs.com%2fwayfarer%2farchive%2f2009%2f11%2f05%2f1596954.html%3flogin%3d1%23commentform" class="underline">登录</a> 或 <a href="http://passport.cnblogs.com/register.aspx?ReturnUrl=http%3a%2f%2fwww.cnblogs.com%2fwayfarer%2farchive%2f2009%2f11%2f05%2f1596954.html%23Bottom2" class="underline">注册</a> 。</div>
</div>

<div class="itnews c_ad_block" id="itnews">
<a href="http://news.cnblogs.com/" target="_top">IT新闻</a>:<br>

          ·  <a href="http://news.cnblogs.com/n/55112/" target="_top">Facebook成为Apache软件基金会黄金赞助商</a><br>
	
          ·  <a href="http://news.cnblogs.com/n/55111/" target="_top">IBM荣获2009年美国专利申请冠军</a><br>
	
          ·  <a href="http://news.cnblogs.com/n/55100/" target="_top">麦当劳美国餐馆Wi-Fi服务全面免费</a><br>
	
          ·  <a href="http://news.cnblogs.com/n/55097/" target="_top">Java SE 6更新，性能大幅提升</a><br>
	
          ·  <a href="http://news.cnblogs.com/n/55096/" target="_top">与谷歌进行竞争 为什么受伤的总是雅虎？</a><br>
	
</div>


<div id="ad_under_comment" class="c_ad_block">
<a href="http://a4.yeshj.com/rd/34138/" target="_top">每天10分钟，轻松学英语</a><br><br>
<div id="google_ads_div_cnblogs_blogpost_bottom1">
<iframe src="index_2.html" style="border: 0pt none ;" marginheight="0" marginwidth="0" name="google_ads_iframe_cnblogs_blogpost_bottom1" id="google_ads_iframe_cnblogs_blogpost_bottom1" scrolling="no" frameborder="0" height="60" width="468"></iframe></div>

<br>
<div id="google_ads_div_cnblogs_blogpost_bottom">
<iframe src="index_3.html" style="border: 0pt none ;" marginheight="0" marginwidth="0" name="google_ads_iframe_cnblogs_blogpost_bottom" id="google_ads_iframe_cnblogs_blogpost_bottom" scrolling="no" frameborder="0" height="250" width="300"></iframe></div>

</div>
<div id="site_nav_under" class="c_ad_block">
网站导航：<br>
<a href="http://www.cnblogs.com/" target="_top">博客园首页</a> &nbsp;<a href="http://news.cnblogs.com/" target="_top">IT新闻</a> &nbsp;<a href="http://home.cnblogs.com/" target="_top">个人主页</a> &nbsp;<a href="http://home.cnblogs.com/ing/" target="_top">闪存</a> &nbsp;<a href="http://job.cnblogs.com/" target="_top">程序员招聘</a> &nbsp;<a href="http://space.cnblogs.com/" target="_top">社区</a> &nbsp;<a href="http://space.cnblogs.com/q/" target="_top">博问</a> &nbsp;<a href="http://wz.cnblogs.com/" target="_top">网摘</a>
</div>
<div id="ad_under_comment2" class="c_ad_block">
<a href="http://www.china-pub.com/STATIC07/0912/zh_ndcx_091212.asp" target="_top"><img src="chinapub_20091222.jpg" alt="" style="border: 0px none ;"></a><br>
<a href="http://www.china-pub.com/itbook/" target="_top">China-pub 计算机图书网上专卖店！6.5万品种2-8折！</a><br>
<a href="http://www.china-pub.com/static07/0901/zh_jueba_090121.asp" target="_top">China-Pub 计算机绝版图书按需印刷服务</a><br>
</div>

<div id="HistoryToday" class="c_ad_block">
<b>历史上的今天:</b><br>

2006-11-05 <a href="http://www.cnblogs.com/wayfarer/archive/2006/11/05/550723.html">PetShop之业务逻辑层设计</a><br>

</div>
<div id="relative_search"><br><b>相关搜索:</b><br> <a href="http://zzk.cnblogs.com/s?w=%e7%bc%96%e7%a8%8b%e7%b5%ae%e8%af%ad" target="_top">编程絮语</a> <a href="http://zzk.cnblogs.com/s?w=Design+%26+Pattern" target="_top">Design &amp; Pattern</a> </div><div id="relative_search"><br><b>在知识库中查看：</b><br> <a href="http://kb.cnblogs.com/a/1596954/">依赖之殇</a></div>

</div>


				
			</div>
			<div id="rightmenu">
				
					
<h3>导航</h3>
<ul>
<li><a id="MyLinks1_HomeLink" href="http://www.cnblogs.com/">博客园</a></li>
<li><a id="MyLinks1_MyHomeLink" href="http://www.cnblogs.com/wayfarer/">首页</a></li>
<li><a id="MyLinks1_NewPostLink" href="http://www.cnblogs.com/wayfarer/admin/EditPosts.aspx?opt=1">新随笔</a></li>
<li><a id="MyLinks1_ContactLink" accesskey="9" href="http://space.cnblogs.com/msg/send/%e5%bc%a0%e9%80%b8">联系</a></li>
<li><a id="MyLinks1_Syndication" href="http://www.cnblogs.com/wayfarer/rss">订阅</a><a id="MyLinks1_XMLLink" href="http://www.cnblogs.com/wayfarer/rss"><img src="xml.gif" alt="订阅" style="border-width: 0px;"></a></li>
<li><a id="MyLinks1_Admin" href="http://www.cnblogs.com/wayfarer/admin/EditPosts.aspx">管理</a></li>
</ul>
					
<h3>公告</h3>
<div class="newsItem">
	我的个人主页：<br>
<a href="http://www.agiledon.com/"><img src="logo.png" alt="logo.gif" border="0" height="78" width="162"></a>
<a href="http://twitter.com/agiledon"><img src="twitter.png"></a><br>

<strong>我的著作与译作</strong>
<p>
<a href="http://www.dangdang.com/zhuanti2006/4742.shtml">《软件设计精要与模式》</a></p>
<p>
<a href="http://www.china-pub.com/38123" target="_top">《WCF服务编程》</a></p>

<ins style="border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 200px; position: relative; visibility: visible; width: 200px;"><ins style="border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 200px; position: relative; visibility: visible; width: 200px;"><iframe allowtransparency="true" hspace="0" id="google_ads_frame4" marginheight="0" marginwidth="0" name="google_ads_frame" src="index_4.html" style="left: 0pt; position: absolute; top: 0pt;" vspace="0" scrolling="no" frameborder="0" height="200" width="200"></iframe></ins></ins>
<p><a href="https://mvp.support.microsoft.com/profile=6C136C2B-30CF-4350-9C52-4BC1B564F251"><img alt="MVP_Horizontal_BlueOnly.png" src="mvp_horizontal_blueonly.png" border="0" height="74" width="182"></a></p>
<div align="left"><!-- Start of StatCounter Code -->From 03-03-2006<br>
<strong>Counter:</strong> <a href="http://www.statcounter.com/" target="_top"><img alt="site stats" src="counter.php" border="0"></a></div>
<div id="profile_block"><a href="http://home.cnblogs.com/wayfarer/" target="_top">我的主页</a>&nbsp; <a href="http://home.cnblogs.com/wayfarer/detail/" target="_top">个人资料</a><br><a href="http://home.cnblogs.com/wayfarer/ing/" target="_top">我的闪存</a>&nbsp; <a href="http://space.cnblogs.com/msg/send/%e5%bc%a0%e9%80%b8" target="_top">发短消息</a></div>
</div>					
					
					
					

<div class="mySearch">
<h3 class="catListTitle">搜索</h3>
<div class="div_my_zzk"><input value="" id="q" onkeydown="return zzk_go_enter(event);" class="input_my_zzk" type="text">&nbsp;<input onclick="zzk_go()" value="找找看" id="btnZzk" class="btn_my_zzk" type="button"></div>
</div>
<h3>常用链接</h3>
<ul>

		<li><a id="SingleColumn1_ctl02_rptMainLinks_ctl00_lnkLinkItem" href="http://www.cnblogs.com/wayfarer/MyPosts.html">我的随笔</a></li>
	
		<li><a id="SingleColumn1_ctl02_rptMainLinks_ctl01_lnkLinkItem" href="http://home.cnblogs.com/wayfarer/">我的空间</a></li>
	
		<li><a id="SingleColumn1_ctl02_rptMainLinks_ctl02_lnkLinkItem" href="http://space.cnblogs.com/msg/recent">我的短信</a></li>
	
		<li><a id="SingleColumn1_ctl02_rptMainLinks_ctl03_lnkLinkItem" href="http://www.cnblogs.com/wayfarer/MyComments.html">我的评论</a></li>
	
<li><a id="itemListLink" onclick="this.blur();WarpClass('itemListLink', 'itemListLin_con');return false;" href="#">更多链接</a></li>
</ul>
<div id="itemListLin_con" style="display: none;">
<ul>
		<li><a id="SingleColumn1_ctl02_repeaterLinks_ctl01_lnkLinkItem" title="我发表过评论的随笔" href="http://www.cnblogs.com/wayfarer/OtherPosts.html">我的参与</a></li>
	
		<li><a id="SingleColumn1_ctl02_repeaterLinks_ctl02_lnkLinkItem" href="http://www.cnblogs.com/wayfarer/MyNews.html">我的新闻</a></li>
	
		<li><a id="SingleColumn1_ctl02_repeaterLinks_ctl03_lnkLinkItem" href="http://www.cnblogs.com/wayfarer/RecentComments.html">最新评论</a></li>
	
		<li><a id="SingleColumn1_ctl02_repeaterLinks_ctl04_lnkLinkItem" href="http://www.cnblogs.com/wayfarer/tag/">我的标签</a></li>
	</ul>
</div>
<h3 class="catListTitle">我参与的团队</h3>
<div class="RecentComment">
	
			<ul style="">
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl01_lnkTeam" href="http://team.cnblogs.com/DesignPattern/">Design &amp; Pattern团队(0/0)</a>
			</li>
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl02_lnkTeam" href="http://team.cnblogs.com/BJDotNetClub/">北京.NET俱乐部(0/0)</a>
			</li>
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl03_lnkTeam" href="http://team.cnblogs.com/chongqing/">重庆.NET俱乐部(0/0)</a>
			</li>
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl04_lnkTeam" href="http://team.cnblogs.com/mvpteam/">MVP(微软最有价值专家)团队(0/0)</a>
			</li>
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl05_lnkTeam" href="http://team.cnblogs.com/wcfs/">WCF技术研究团队(0/0)</a>
			</li>
		
			<li>
				<a id="SingleColumn1__1daaec0_TeamList_ctl06_lnkTeam" href="http://team.cnblogs.com/softwarehome/">软件开发家园(0/0)</a>
			</li>
		
			</ul>
		
</div>

		<h3>随笔分类<span style="font-size: 11px; font-weight: normal;">(273)</span></h3>
		
				<ul>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl01_Link" href="http://www.cnblogs.com/wayfarer/category/1092.html">.NET FrameWork(18)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl01_RssLink" title="Subscribe to .NET FrameWork(18)" href="http://www.cnblogs.com/wayfarer/category/1092.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl02_Link" href="http://www.cnblogs.com/wayfarer/category/1235.html">.NET Remoting(14)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl02_RssLink" title="Subscribe to .NET Remoting(14)" href="http://www.cnblogs.com/wayfarer/category/1235.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl03_Link" href="http://www.cnblogs.com/wayfarer/category/35983.html">AOP(6)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl03_RssLink" title="Subscribe to AOP(6)" href="http://www.cnblogs.com/wayfarer/category/35983.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl04_Link" href="http://www.cnblogs.com/wayfarer/category/1236.html">ASP.NET(5)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl04_RssLink" title="Subscribe to ASP.NET(5)" href="http://www.cnblogs.com/wayfarer/category/1236.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl05_Link" href="http://www.cnblogs.com/wayfarer/category/80097.html">Book(7)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl05_RssLink" title="Subscribe to Book(7)" href="http://www.cnblogs.com/wayfarer/category/80097.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl06_Link" href="http://www.cnblogs.com/wayfarer/category/1237.html">C# Programming(22)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl06_RssLink" title="Subscribe to C# Programming(22)" href="http://www.cnblogs.com/wayfarer/category/1237.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl07_Link" href="http://www.cnblogs.com/wayfarer/category/6719.html">DataBase(3)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl07_RssLink" title="Subscribe to DataBase(3)" href="http://www.cnblogs.com/wayfarer/category/6719.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl08_Link" href="http://www.cnblogs.com/wayfarer/category/14834.html">Design &amp; Pattern(43)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl08_RssLink" title="Subscribe to Design &amp; Pattern(43)" href="http://www.cnblogs.com/wayfarer/category/14834.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl09_Link" href="http://www.cnblogs.com/wayfarer/category/1239.html">Essay(46)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl09_RssLink" title="Subscribe to Essay(46)" href="http://www.cnblogs.com/wayfarer/category/1239.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl10_Link" href="http://www.cnblogs.com/wayfarer/category/84415.html">php(1)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl10_RssLink" title="Subscribe to php(1)" href="http://www.cnblogs.com/wayfarer/category/84415.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl11_Link" href="http://www.cnblogs.com/wayfarer/category/95646.html">Programming WCF Services(16)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl11_RssLink" title="Subscribe to Programming WCF Services(16)" href="http://www.cnblogs.com/wayfarer/category/95646.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl12_Link" href="http://www.cnblogs.com/wayfarer/category/122419.html">Translation(7)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl12_RssLink" title="Subscribe to Translation(7)" href="http://www.cnblogs.com/wayfarer/category/122419.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl13_Link" href="http://www.cnblogs.com/wayfarer/category/24807.html">WCF &amp; SOA(21)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl13_RssLink" title="Subscribe to WCF &amp; SOA(21)" href="http://www.cnblogs.com/wayfarer/category/24807.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl14_Link" href="http://www.cnblogs.com/wayfarer/category/111771.html">WCF Tips(14)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl14_RssLink" title="Subscribe to WCF Tips(14)" href="http://www.cnblogs.com/wayfarer/category/111771.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl15_Link" href="http://www.cnblogs.com/wayfarer/category/71923.html">博客园图书出版(6)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl15_RssLink" title="Subscribe to 博客园图书出版(6)" href="http://www.cnblogs.com/wayfarer/category/71923.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl16_Link" href="http://www.cnblogs.com/wayfarer/category/95645.html">软件设计精要与模式(11)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl16_RssLink" title="Subscribe to 软件设计精要与模式(11)" href="http://www.cnblogs.com/wayfarer/category/95645.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl17_Link" href="http://www.cnblogs.com/wayfarer/category/52160.html">团队公告(13)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl17_RssLink" title="Subscribe to 团队公告(13)" href="http://www.cnblogs.com/wayfarer/category/52160.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl18_Link" href="http://www.cnblogs.com/wayfarer/category/106653.html">项目管理(16)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl18_RssLink" title="Subscribe to 项目管理(16)" href="http://www.cnblogs.com/wayfarer/category/106653.html/rss">(rss)</a></li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl19_Link" href="http://www.cnblogs.com/wayfarer/category/133955.html">业界时评(4)</a> <a id="SingleColumn1_Categories_CatList_ctl00_LinkList_ctl19_RssLink" title="Subscribe to 业界时评(4)" href="http://www.cnblogs.com/wayfarer/category/133955.html/rss">(rss)</a></li>
			
				</ul>
			
	
		<h3>随笔档案<span style="font-size: 11px; font-weight: normal;">(266)</span></h3>
		
				<ul>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl01_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/11.html">2009年11月 (4)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl02_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/10.html">2009年10月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl03_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/08.html">2009年8月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl04_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/07.html">2009年7月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl05_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/06.html">2009年6月 (8)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl06_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/04.html">2009年4月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl07_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/03.html">2009年3月 (7)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl08_Link" href="http://www.cnblogs.com/wayfarer/archive/2009/02.html">2009年2月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl09_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/12.html">2008年12月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl10_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/10.html">2008年10月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl11_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/09.html">2008年9月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl12_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/07.html">2008年7月 (4)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl13_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/05.html">2008年5月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl14_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/04.html">2008年4月 (5)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl15_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/03.html">2008年3月 (7)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl16_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/02.html">2008年2月 (7)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl17_Link" href="http://www.cnblogs.com/wayfarer/archive/2008/01.html">2008年1月 (6)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl18_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/12.html">2007年12月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl19_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/11.html">2007年11月 (7)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl20_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/10.html">2007年10月 (5)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl21_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/09.html">2007年9月 (9)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl22_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/08.html">2007年8月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl23_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/06.html">2007年6月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl24_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/05.html">2007年5月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl25_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/04.html">2007年4月 (4)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl26_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/03.html">2007年3月 (5)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl27_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/02.html">2007年2月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl28_Link" href="http://www.cnblogs.com/wayfarer/archive/2007/01.html">2007年1月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl29_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/12.html">2006年12月 (4)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl30_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/11.html">2006年11月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl31_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/10.html">2006年10月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl32_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/09.html">2006年9月 (8)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl33_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/04.html">2006年4月 (13)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl34_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/03.html">2006年3月 (6)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl35_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/02.html">2006年2月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl36_Link" href="http://www.cnblogs.com/wayfarer/archive/2006/01.html">2006年1月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl37_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/12.html">2005年12月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl38_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/11.html">2005年11月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl39_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/10.html">2005年10月 (2)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl40_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/09.html">2005年9月 (4)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl41_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/08.html">2005年8月 (8)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl42_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/07.html">2005年7月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl43_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/05.html">2005年5月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl44_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/04.html">2005年4月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl45_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/03.html">2005年3月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl46_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/02.html">2005年2月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl47_Link" href="http://www.cnblogs.com/wayfarer/archive/2005/01.html">2005年1月 (8)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl48_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/12.html">2004年12月 (15)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl49_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/11.html">2004年11月 (7)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl50_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/10.html">2004年10月 (5)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl51_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/09.html">2004年9月 (10)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl52_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/08.html">2004年8月 (9)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl53_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/07.html">2004年7月 (14)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl54_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/06.html">2004年6月 (1)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl55_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/05.html">2004年5月 (3)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl56_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/04.html">2004年4月 (17)</a> </li>
			
				<li><a id="SingleColumn1_Categories_CatList_ctl01_LinkList_ctl57_Link" href="http://www.cnblogs.com/wayfarer/archive/2004/03.html">2004年3月 (6)</a> </li>
			
				</ul>
			
	

<h3 class="catListTitle">最新随笔</h3>
<div class="RecentComment" id="RecentPosts">
<ul style="">
	
	
			<li><a id="SingleColumn1_ctl04_RecentPostsList_ctl00_RecentPostsList2_ctl00_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/11/1601360.html">1.&nbsp;在Scrum中实施敏捷建模</a></li>
		
		
	
			<li><a id="SingleColumn1_ctl04_RecentPostsList_ctl01_RecentPostsList2_ctl00_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/10/1600467.html">2.&nbsp;解除具体依赖的技术</a></li>
		
		
	
			<li><a id="SingleColumn1_ctl04_RecentPostsList_ctl02_RecentPostsList2_ctl00_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/05/1596954.html">3.&nbsp;依赖之殇</a></li>
		
		
	
			<li><a id="SingleColumn1_ctl04_RecentPostsList_ctl03_RecentPostsList2_ctl00_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/03/1595555.html">4.&nbsp;虚方法的使用</a></li>
		
		
	
			<li><a id="SingleColumn1_ctl04_RecentPostsList_ctl04_RecentPostsList2_ctl00_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/10/28/1591545.html">5.&nbsp;31天速成重构</a></li>
		
	
</ul>
</div>

<h3>积分与排名</h3>
<ul>
	<li>
		积分 -
		1367035
	</li><li>
		排名 -
		15
	</li>
</ul>

<h3 class="catListTitle">最新评论
	<a id="SingleColumn1__a835fb_RSSHyperlink1" href="http://www.cnblogs.com/wayfarer/CommentsRSS.aspx"><img src="xml.gif" style="border-width: 0px;"></a></h3>
<div class="RecentComment" id="RecentComments">
	
			<ul>
		
			<li style="">
				<a id="SingleColumn1__a835fb_CommentList_ctl01_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2008/04/15/1154814.html#1745148">1.&nbsp;Re:博客园为你带来了什么价值</a>
			</li>
			<li style="">
				1 跟踪了技术
跟不上最新的技术，但不能让主流技术把自己落得太远
2 学习了技术
很多人的技术系列，还有博客园的系列专题，非常好。
3 技术资料的储备
4 交流的窗口
这点也非常重要。
			</li>
			<li style="text-align: right; margin-right: 4px;">
				--梅桦</li>
		
			<li style="">
				<a id="SingleColumn1__a835fb_CommentList_ctl02_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2006/04/14/375382.html#1735837">2.&nbsp;Re:PetShop的系统架构设计</a>
			</li>
			<li style="">
				erretryrtytrytrytry
			</li>
			<li style="text-align: right; margin-right: 4px;">
				--rrtyrt</li>
		
			<li style="">
				<a id="SingleColumn1__a835fb_CommentList_ctl03_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/03/1595555.html#1734451">3.&nbsp;Re:虚方法的使用</a>
			</li>
			<li style="">
				听老师说你的那个封装类的方法写的不错，但是我在你的空间里面找了半天都没有找到，我自己认为我的封装方法写出来的重用性不是很好，所以想像你学习，如果可以的话，可不可以将你的那个封装类发送到我的邮箱：a13...
			</li>
			<li style="text-align: right; margin-right: 4px;">
				--暧—守护</li>
		
			<li style="">
				<a id="SingleColumn1__a835fb_CommentList_ctl04_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/03/1595555.html#1734445">4.&nbsp;Re:虚方法的使用</a>
			</li>
			<li style="">
				问下，你的那个封装类的方法在那个地方放着的啊？？？
			</li>
			<li style="text-align: right; margin-right: 4px;">
				--暧—守护</li>
		
			<li style="">
				<a id="SingleColumn1__a835fb_CommentList_ctl05_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2009/11/11/1601360.html#1731648">5.&nbsp;Re:在Scrum中实施敏捷建模</a>
			</li>
			<li style="">
				说明，有网友zhou提出，我在文中写到：“Scrum并没有提供核心的价值观”，是不正确的。他提出，Ken Schwaber和Mike Beedle合著的《Agile Software Developm...
			</li>
			<li style="text-align: right; margin-right: 4px;">
				--张逸</li>
		
			</ul>
		
</div>

<h3 class="catListTitle">阅读排行榜</h3>
<div class="RecentComment" id="TopViewPosts"> 
	
			<ul style="">
		
			<li>
				<a id="SingleColumn1_ctl07_TopList_ctl01_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/07/30/28723.html">1.&nbsp;Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇 (77504)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl07_TopList_ctl02_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/04/21/6779.html">2.&nbsp;automation服务器不能创建对象(65897)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl07_TopList_ctl03_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2006/04/14/375382.html">3.&nbsp;PetShop的系统架构设计(65105)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl07_TopList_ctl04_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/04/12/5852.html">4.&nbsp;考察数据结构——第二部分：队列、堆栈和哈希表[译](23289)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl07_TopList_ctl05_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/08/05/30437.html">5.&nbsp;Microsoft .Net Remoting系列专题之二：Marshal、Disconnect与生命周期以及跟踪服务(21531)</a>
			</li>
		
			</ul>
		
</div>

<h3 class="catListTitle">评论排行榜</h3>
<div class="RecentComment" id="TopCommentsPosts">
	
			<ul style="">
		
			<li>
				<a id="SingleColumn1_ctl08_TopList_ctl01_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/04/21/6779.html">1.&nbsp;automation服务器不能创建对象(304)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl08_TopList_ctl02_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2004/07/30/28723.html">2.&nbsp;Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇 (154)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl08_TopList_ctl03_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2006/04/14/375382.html">3.&nbsp;PetShop的系统架构设计(87)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl08_TopList_ctl04_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2008/04/15/1154814.html">4.&nbsp;博客园为你带来了什么价值(83)</a>
			</li>
		
			<li>
				<a id="SingleColumn1_ctl08_TopList_ctl05_Hyperlink1" href="http://www.cnblogs.com/wayfarer/archive/2007/04/10/707122.html">5.&nbsp;《软件设计精要与模式》出版(81)</a>
			</li>
		
			</ul>
		
</div>
					
<div id="footer">
	Powered by: 
	<br>
	
	<a id="Footer1_Hyperlink3" name="Hyperlink1" href="http://www.cnblogs.com/" style="font-family: Verdana; font-size: 12px;">博客园</a>
	<br>
	Copyright © 张逸
</div>
				
			</div>			
			
	

    </form>
	
	
      
    
    
    
</body>
</html>
